#include <stdio.h>

// 定义一个二维数组 a，使用数组名表示该数组的首地址，
// 通过不同的形式输出相应的数组 a 中的相关值

int main() {
    int i, j;
    int a[3][4] = {1, 2, 3, 4,
                   5, 6, 7, 8,
                   9, 10, 11, 12};
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 4; j++) {
            printf("%3d", a[i][j]);
        }
        printf("\n");
    }

    printf("%d,%d\n", a, *a);
    printf("%d,%d\n", a[0], *(a + 0));
    printf("%d,%d\n", a[1], *(a + 1));

    printf("%d,%d\n", &a[0], &a[0][0]);

    printf("%d,%d\n", &(a[1][0]), (*(a + 1) + 0));
    printf("%d,%d\n", &(a[1][1]), (*(a + 1) + 1));
    printf("%d,%d\n", a[1][0], *(*(a + 1) + 0));

    return 0;
}